/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：Aggregation.js<br>
 * 日期：2016年7月14日<br>
 * 作者: 王志远<br>
 * 功能：JS模拟类聚合实现，同时支持Nodejs后台开发和web前端开发<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

;(function(){
	
	//定义名称空间变量
	var namespace = {};
	
	//创建名称空间:Rainier.Basic
	//根据NodeJS后端还是web前端判断应该创建名称空间的根对象
	if((typeof(window) !== "undefined")){
		makeNamespace(window,"Rainier.Basic");
		namespace = window.Rainier.Basic;
	}else{
		var ml_nsutils = require("../utils/nsutils.js");
		ml_nsutils.makeNamespace(exports,"Rainier.Basic");
		namespace = exports.Rainier.Basic;
	}
	
	/**
	 * 函数名称：Rainier.Basic.aggregateIn<br>
	 * 函数功能：将一个类中的接口函数聚合到另一个类上<br>
	 * 参数输入：source 聚合接口
	 * 参数输出：target 被聚合接口
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	namespace.aggregateIn = function(source,target){
		
		//读取source类的原型列表，只能遍历到函数
		var attrs = {};
		for(var key in source.prototype){
			if(source.prototype.hasOwnProperty(key)){
				attrs[key] = source.prototype[key];
			}
		}
		
		//将target类中没定义的source方法添加到target中
		for(var method in attrs){
			if(attrs.hasOwnProperty(method) && !(target.prototype[method])){
				target.prototype[method] = attrs[method];
			}
		}
	};
	
})();